package com.doubao.chat.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doubao.chat.entity.ChatSession;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 聊天会话Mapper接口
 */
@Mapper
public interface ChatSessionMapper extends BaseMapper<ChatSession> {

    /**
     * 获取用户的会话列表（带智能体信息和最后一条消息）
     *
     * @param page 分页参数
     * @param userId 用户ID
     * @param deviceId 智能体ID，可选
     * @return 会话列表
     */
    IPage<ChatSession> selectUserSessionList(Page<ChatSession> page,
                                             @Param("userId") Long userId,
                                             @Param("deviceId") Long deviceId);

    /**
     * 更新会话消息数量和最后消息时间
     *
     * @param sessionId 会话ID
     * @return 更新行数
     */
    int updateSessionMessageCount(@Param("sessionId") Long sessionId);

    /**
     * 批量删除会话(逻辑删除)
     *
     * @param userId 用户ID
     * @param sessionIds 会话ID列表
     * @return 删除行数
     */
    int batchDeleteSessions(@Param("userId") Long userId,
                            @Param("sessionIds") List<Long> sessionIds);
}